1. Field of the Invention
The present invention is related to Internet Protocol (IP) telephony systems, and more particularly, to a method and apparatus of implementing a presence-based universal camp-on feature in IP telephony systems using Session Initiation Protocol (SIP) messages.
2. Description of Related Art
Since the invention of the telephone well over one hundred years ago, the prevalence and pervasiveness of telephone use and the importance of telephones to our society has continued to grow. For the vast majority of that time period, users have used conventional, circuit-switched telephones, communicating over the Public Switched Telephone Network (PSTN). Eventually, Private Branch Exchange (PBX) systems were developed to service the needs of, in particular, businesses with many employees, each having their own telephone. PBX systems typically include a central entity, which acts as an internal switching mechanism, connecting callers within an office system to each other, and to the PSTN via “outside lines”.
PBX systems are typically set up such that a “front desk” or reception location on the system may be accessed by outside callers (via the PSTN) using a particular “general” phone number, such as (555) 555-1000. Each user within the PBX system (such as each employee of the company), would have assigned to them a similar phone number, such as (555) 555-1234. An outside caller calling this latter number would be routed by the central entity to the telephone associated with the “1234” extension. And each user would have such an extension.
Within PBX systems, certain additional features have been developed. For example, a “caller ID” feature has been implemented, whereby when a user having an extension such as 1234 calls another user on the system having extension such as 5678, the called party's telephone may display “1234” as the calling extension, along with the calling party's name, on a display of the telephone. To accommodate such features, telephones have been developed specifically for PBX implementations. These telephones typically have a display, such as an LCD, as well as a number of buttons designed to correspond to a number of provided features.
Another such feature that has been developed for PBX systems is a “camp” or “camp-on” features. The camp-on feature may be implemented as follows: user 1234 calls user 5678, who does not answer. Perhaps while the phone is ringing or in response to receiving a busy signal or an indication that user 5678 is on another line, user 1234 invokes the camp-on feature by, for example, pressing a “CAMP” button on his or her PBX phone. When user 5678 ends his or her current call (if that user was on a call), a message may appear on the LCD of user 5678's PBX phone, such as “Call J. Doe at extension 1234.”
In approximately the last decade, the pervasiveness and popularity of the Internet has risen dramatically. More people than ever are online, and the number only grows. Along with the meteoric rise of the Internet has come the development of Internet telephony, also known as IP (Internet Protocol) telephony, or VoIP (Voice over IP). In IP telephony, a device known as a packet-based telephone will convert a user's audible inputs (such as spoken words) to digital data, which is then packetized, or broken into multiple packets, and transmitted using the Internet Protocol. Incoming data is arranged in the proper sequence, and the packet-based telephone converts this data to analog sounds, and plays them for the user. If one user is using a VoIP phone and the other party is using a conventional phone connected to the PSTN, a gateway server will manage the conversion between the two types of data transmission.
Along with the development of the Internet and IP telephony, a protocol called Session Initiation Protocol, or SIP, has developed. SIP is a protocol useful for transmitting short messages between entities connected via one or more data networks, and is primarily used to set up, or initiate, media or communication sessions between entities. SIP operates on a request-response model similar to HTTP. For example, a communication session may be set up between two entities by the first entity sending the second entity a SIP “INVITE” request. SIP requests may also be referred to as SIP methods. The second entity may transmit to the first entity a “200 OK” response. When this response is acknowledged by the first entity transmitting an “ACK” message to the second entity, the communication session may then be established. In many implementations, a server known as a “SIP proxy” maintains information about which users are currently logged in to the system and how those users may be contacted, and facilitates messaging by forwarding messages from sender to recipient, among other functions.
SIP responses are typically associated with a number, which places the response in a class of responses. Responses of the form “1xx” (“180 Ringing”) are known as provisional or informational responses, and generally indicate that the request is progressing but is not yet complete. “2xx” responses (“200 OK”) indicate success (that the request has completed successfully). “3xx” responses (“302 Moved Temporarily”) indicate redirection, meaning that the requesting party should send the request to another location. “4xx” responses (“486 Busy Here”), “5xx” responses (“503 Service Unavailable”), and “6xx” responses (“603 Decline”) indicate that some type of error or failure has occurred.
SIP also provides for what is known as event subscription and notification. For example, one SIP entity, such as a SIP-enabled packet-based telephone (or SIP phone) may send a SUBSCRIBE request to a second SIP phone, requesting a subscription to a certain parameter of the second SIP phone. If the second SIP phone accepts the subscription, it will transmit both a “200 OK” response and a NOTIFY request to the first SIP phone. The “200 OK” response indicates success of the SUBSCRIBE request, while the NOTIFY request will give the first SIP phone an immediate report as to the status of the subscribed-to parameter. For as long as that subscription lasts (which may be specified using an “Expires” field in the original SUBSCRIBE request), the second SIP phone will transmit a NOTIFY request to the first SIP phone each time the value of the subscribed-to parameter changes. Each NOTIFY request will result in the first SIP phone transmitting a response to the second SIP phone, usually “200 OK”.
The development of SIP phones has enabled the development of a number of telephony features using SIP messaging. An “automatic callback” feature has been developed, whereby a first SIP phone calls a second SIP phone, which happens to be in a busy state at the time the call is placed. The first SIP phone then sends a SUBSCRIBE request to the second SIP phone, requesting notification when the second SIP phone becomes available for a communication session. When the second SIP phone becomes available, it sends a NOTIFY request to the first SIP phone. The first SIP phone then automatically places another call to the second SIP phone.
This “automatic callback” feature has drawbacks. For example, the user of the first SIP phone may not be present at the first SIP phone when the automatic call is placed, which is triggered only by the present SIP phone becoming available. Perhaps the user of the first SIP phone has left the office for the day. This results in a confusing scenario where the user of the second SIP phone picks up the phone and hears ringing instead of hearing a calling party, as would typically be the case. This “ring back” tone is undesirable and confusing to users.